//
//  ROAsset.h
//  Runone
//
//  Created by runone02 on 16/12/29.
//  Copyright © 2016年 runone. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import <Photos/Photos.h>

@interface ROAsset : NSObject
@property (nonatomic, strong) PHAsset *asset;
@property (nonatomic, assign, readonly) CGFloat imageSize;
@property (nonatomic, assign, getter=isFullImage) BOOL fullImage;   //是否选择的原图
@property (nonatomic, assign, getter=isSelected) BOOL selected;      //是否被选中

/**
 获取图片的原图（同步方法，不推荐,图片过大可能阻塞主线程）
 
 @return 图片的原图
 */
- (UIImage *)orignImage;

- (void)fetchOriginImageWithCompletion:(void (^)(UIImage *orignImage, NSDictionary *info))completion withProgressHandler:(PHAssetImageProgressHandler)phProgressHandler;

/**
 *  Asset 的缩略图
 *
 *  @param size 指定返回的缩略图的大小
 *
 *  @return Asset 的缩略图
 */
- (UIImage *)thumbnailWithSize:(CGSize)size;

/**
 *  异步请求 Asset 的缩略图，不会产生网络请求
 *
 *  @param size       指定返回的缩略图的大小
 *  @param completion 完成请求后调用的 block，参数中包含了请求的缩略图以及图片信息，这个 block 会被多次调用，
 *                    其中第一次调用获取到的尺寸很小的低清图，然后不断调用，直接获取到高清图，获取到高清图后 ALiAsset 会缓存起这张高清图，
 *                    这时 block 中的第二个参数（图片信息）返回的为 nil。
 *
 */
- (void)fetchThumbnailImageWithSize:(CGSize)size completion:(void (^)(UIImage *, NSDictionary *))completion;

/**
 *  Asset 的预览图
 *
 *  @return Asset 的全屏图
 */
- (UIImage *)previewImage;

/**
 *  异步请求 Asset 的预览图，
 *
 *  @wraning iOS 8.0 以下中并没有异步请求预览图的接口，因此实际上为同步请求，这时 block 中的第二个参数（图片信息）返回的为 nil。
 */
- (void)fetchPreviewImageWithCompletion:(void (^)(UIImage *, NSDictionary *))completion withProgressHandler:(PHAssetImageProgressHandler)phProgressHandler;

@end
